using System;
using System.Text;

namespace iBeauty.BusinessObjects
{
	[Serializable()]
	public class Customer
	{
		private string _ID;

		public string ID
		{
			get { return _ID; }
			set { _ID = value; }
		}

		private DateTime? _CreateDate;

		public DateTime? CreateDate
		{
			get { return _CreateDate; }
			set { _CreateDate = value; }
		}

		private DateTime? _ModifiedDate;

		public DateTime? ModifiedDate
		{
			get { return _ModifiedDate; }
			set { _ModifiedDate = value; }
		}

		private DateTime? _TimeStamp;

		public DateTime? TimeStamp
		{
			get { return _TimeStamp; }
			set { _TimeStamp = value; }
		}

		private string _CustomerCode;

		public string CustomerCode
		{
			get { return _CustomerCode; }
			set { _CustomerCode = value; }
		}

		private string _CustomerName;

		public string CustomerName
		{
			get { return _CustomerName; }
			set { _CustomerName = value; }
		}

		private string _Barcode;

		public string Barcode
		{
			get { return _Barcode; }
			set { _Barcode = value; }
		}

		private string _Email;

		public string Email
		{
			get { return _Email; }
			set { _Email = value; }
		}

		private string _Address;

		public string Address
		{
			get { return _Address; }
			set { _Address = value; }
		}

		private string _Phone;

		public string Phone
		{
			get { return _Phone; }
			set { _Phone = value; }
		}

		private string _Pictures;

		public string Pictures
		{
			get { return _Pictures; }
			set { _Pictures = value; }
		}

		private DateTime? _Born;

		public DateTime? Born
		{
			get { return _Born; }
			set { _Born = value; }
		}

		private string _Gender;

		public string Gender
		{
			get { return _Gender; }
			set { _Gender = value; }
		}

		private int? _Job;

		public int? Job
		{
			get { return _Job; }
			set { _Job = value; }
		}

		private string _Nationlaty;

		public string Nationlaty
		{
			get { return _Nationlaty; }
			set { _Nationlaty = value; }
		}

		private string _BloodType;

		public string BloodType
		{
			get { return _BloodType; }
			set { _BloodType = value; }
		}

		private DateTime? _FirstVisit;

		public DateTime? FirstVisit
		{
			get { return _FirstVisit; }
			set { _FirstVisit = value; }
		}

		private DateTime? _LastVisit;

		public DateTime? LastVisit
		{
			get { return _LastVisit; }
			set { _LastVisit = value; }
		}

		private int? _AccountId;

		public int? AccountId
		{
			get { return _AccountId; }
			set { _AccountId = value; }
		}

		private string _Description;

		public string Description
		{
			get { return _Description; }
			set { _Description = value; }
		}

		public Customer()
		{ }

		public Customer(string ID,DateTime? CreateDate,DateTime? ModifiedDate,DateTime? TimeStamp,string CustomerCode,string CustomerName,string Barcode,string Email,string Address,string Phone,string Pictures,DateTime? Born,string Gender,int? Job,string Nationlaty,string BloodType,DateTime? FirstVisit,DateTime? LastVisit,int? AccountId,string Description)
		{
			this.ID = ID;
			this.CreateDate = CreateDate;
			this.ModifiedDate = ModifiedDate;
			this.TimeStamp = TimeStamp;
			this.CustomerCode = CustomerCode;
			this.CustomerName = CustomerName;
			this.Barcode = Barcode;
			this.Email = Email;
			this.Address = Address;
			this.Phone = Phone;
			this.Pictures = Pictures;
			this.Born = Born;
			this.Gender = Gender;
			this.Job = Job;
			this.Nationlaty = Nationlaty;
			this.BloodType = BloodType;
			this.FirstVisit = FirstVisit;
			this.LastVisit = LastVisit;
			this.AccountId = AccountId;
			this.Description = Description;
		}

		public override string ToString()
		{
			return "ID = " + ID + ",CreateDate = " + CreateDate.ToString() + ",ModifiedDate = " + ModifiedDate.ToString() + ",TimeStamp = " + TimeStamp.ToString() + ",CustomerCode = " + CustomerCode + ",CustomerName = " + CustomerName + ",Barcode = " + Barcode + ",Email = " + Email + ",Address = " + Address + ",Phone = " + Phone + ",Pictures = " + Pictures + ",Born = " + Born.ToString() + ",Gender = " + Gender + ",Job = " + Job.ToString() + ",Nationlaty = " + Nationlaty + ",BloodType = " + BloodType + ",FirstVisit = " + FirstVisit.ToString() + ",LastVisit = " + LastVisit.ToString() + ",AccountId = " + AccountId.ToString() + ",Description = " + Description;
		}

		public class IDComparer : System.Collections.Generic.IComparer<Customer>
		{
			public SorterMode SorterMode;
			public IDComparer()
			{ }
			public IDComparer(SorterMode SorterMode)
			{
				this.SorterMode = SorterMode;
			}
			#region IComparer<Customer> Membres
			int System.Collections.Generic.IComparer<Customer>.Compare(Customer x, Customer y)
			{
				if (SorterMode == SorterMode.Ascending)
				{
					return y.ID.CompareTo(x.ID);
				}
				else
				{
					return x.ID.CompareTo(y.ID);
				}
			}
			#endregion
		}
		public class CustomerCodeComparer : System.Collections.Generic.IComparer<Customer>
		{
			public SorterMode SorterMode;
			public CustomerCodeComparer()
			{ }
			public CustomerCodeComparer(SorterMode SorterMode)
			{
				this.SorterMode = SorterMode;
			}
			#region IComparer<Customer> Membres
			int System.Collections.Generic.IComparer<Customer>.Compare(Customer x, Customer y)
			{
				if (SorterMode == SorterMode.Ascending)
				{
					return y.CustomerCode.CompareTo(x.CustomerCode);
				}
				else
				{
					return x.CustomerCode.CompareTo(y.CustomerCode);
				}
			}
			#endregion
		}
		public class CustomerNameComparer : System.Collections.Generic.IComparer<Customer>
		{
			public SorterMode SorterMode;
			public CustomerNameComparer()
			{ }
			public CustomerNameComparer(SorterMode SorterMode)
			{
				this.SorterMode = SorterMode;
			}
			#region IComparer<Customer> Membres
			int System.Collections.Generic.IComparer<Customer>.Compare(Customer x, Customer y)
			{
				if (SorterMode == SorterMode.Ascending)
				{
					return y.CustomerName.CompareTo(x.CustomerName);
				}
				else
				{
					return x.CustomerName.CompareTo(y.CustomerName);
				}
			}
			#endregion
		}
		public class BarcodeComparer : System.Collections.Generic.IComparer<Customer>
		{
			public SorterMode SorterMode;
			public BarcodeComparer()
			{ }
			public BarcodeComparer(SorterMode SorterMode)
			{
				this.SorterMode = SorterMode;
			}
			#region IComparer<Customer> Membres
			int System.Collections.Generic.IComparer<Customer>.Compare(Customer x, Customer y)
			{
				if (SorterMode == SorterMode.Ascending)
				{
					return y.Barcode.CompareTo(x.Barcode);
				}
				else
				{
					return x.Barcode.CompareTo(y.Barcode);
				}
			}
			#endregion
		}
		public class EmailComparer : System.Collections.Generic.IComparer<Customer>
		{
			public SorterMode SorterMode;
			public EmailComparer()
			{ }
			public EmailComparer(SorterMode SorterMode)
			{
				this.SorterMode = SorterMode;
			}
			#region IComparer<Customer> Membres
			int System.Collections.Generic.IComparer<Customer>.Compare(Customer x, Customer y)
			{
				if (SorterMode == SorterMode.Ascending)
				{
					return y.Email.CompareTo(x.Email);
				}
				else
				{
					return x.Email.CompareTo(y.Email);
				}
			}
			#endregion
		}
		public class AddressComparer : System.Collections.Generic.IComparer<Customer>
		{
			public SorterMode SorterMode;
			public AddressComparer()
			{ }
			public AddressComparer(SorterMode SorterMode)
			{
				this.SorterMode = SorterMode;
			}
			#region IComparer<Customer> Membres
			int System.Collections.Generic.IComparer<Customer>.Compare(Customer x, Customer y)
			{
				if (SorterMode == SorterMode.Ascending)
				{
					return y.Address.CompareTo(x.Address);
				}
				else
				{
					return x.Address.CompareTo(y.Address);
				}
			}
			#endregion
		}
		public class PhoneComparer : System.Collections.Generic.IComparer<Customer>
		{
			public SorterMode SorterMode;
			public PhoneComparer()
			{ }
			public PhoneComparer(SorterMode SorterMode)
			{
				this.SorterMode = SorterMode;
			}
			#region IComparer<Customer> Membres
			int System.Collections.Generic.IComparer<Customer>.Compare(Customer x, Customer y)
			{
				if (SorterMode == SorterMode.Ascending)
				{
					return y.Phone.CompareTo(x.Phone);
				}
				else
				{
					return x.Phone.CompareTo(y.Phone);
				}
			}
			#endregion
		}
		public class PicturesComparer : System.Collections.Generic.IComparer<Customer>
		{
			public SorterMode SorterMode;
			public PicturesComparer()
			{ }
			public PicturesComparer(SorterMode SorterMode)
			{
				this.SorterMode = SorterMode;
			}
			#region IComparer<Customer> Membres
			int System.Collections.Generic.IComparer<Customer>.Compare(Customer x, Customer y)
			{
				if (SorterMode == SorterMode.Ascending)
				{
					return y.Pictures.CompareTo(x.Pictures);
				}
				else
				{
					return x.Pictures.CompareTo(y.Pictures);
				}
			}
			#endregion
		}
		public class GenderComparer : System.Collections.Generic.IComparer<Customer>
		{
			public SorterMode SorterMode;
			public GenderComparer()
			{ }
			public GenderComparer(SorterMode SorterMode)
			{
				this.SorterMode = SorterMode;
			}
			#region IComparer<Customer> Membres
			int System.Collections.Generic.IComparer<Customer>.Compare(Customer x, Customer y)
			{
				if (SorterMode == SorterMode.Ascending)
				{
					return y.Gender.CompareTo(x.Gender);
				}
				else
				{
					return x.Gender.CompareTo(y.Gender);
				}
			}
			#endregion
		}
		public class NationlatyComparer : System.Collections.Generic.IComparer<Customer>
		{
			public SorterMode SorterMode;
			public NationlatyComparer()
			{ }
			public NationlatyComparer(SorterMode SorterMode)
			{
				this.SorterMode = SorterMode;
			}
			#region IComparer<Customer> Membres
			int System.Collections.Generic.IComparer<Customer>.Compare(Customer x, Customer y)
			{
				if (SorterMode == SorterMode.Ascending)
				{
					return y.Nationlaty.CompareTo(x.Nationlaty);
				}
				else
				{
					return x.Nationlaty.CompareTo(y.Nationlaty);
				}
			}
			#endregion
		}
		public class BloodTypeComparer : System.Collections.Generic.IComparer<Customer>
		{
			public SorterMode SorterMode;
			public BloodTypeComparer()
			{ }
			public BloodTypeComparer(SorterMode SorterMode)
			{
				this.SorterMode = SorterMode;
			}
			#region IComparer<Customer> Membres
			int System.Collections.Generic.IComparer<Customer>.Compare(Customer x, Customer y)
			{
				if (SorterMode == SorterMode.Ascending)
				{
					return y.BloodType.CompareTo(x.BloodType);
				}
				else
				{
					return x.BloodType.CompareTo(y.BloodType);
				}
			}
			#endregion
		}
		public class DescriptionComparer : System.Collections.Generic.IComparer<Customer>
		{
			public SorterMode SorterMode;
			public DescriptionComparer()
			{ }
			public DescriptionComparer(SorterMode SorterMode)
			{
				this.SorterMode = SorterMode;
			}
			#region IComparer<Customer> Membres
			int System.Collections.Generic.IComparer<Customer>.Compare(Customer x, Customer y)
			{
				if (SorterMode == SorterMode.Ascending)
				{
					return y.Description.CompareTo(x.Description);
				}
				else
				{
					return x.Description.CompareTo(y.Description);
				}
			}
			#endregion
		}
	}
}
